﻿using System;
using System.Collections.Generic;
using System.Media;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using Microsoft.Xna.Framework.Net;

namespace WindowsGame1
{
    class fonctions
    {
        
        public static bool déplacé, a_agi;
        public static double fcdroite(Vector2 vecteur, bool moins)
        {
            int a = 21 / 2, b = -41 / 2, c = -4200;
            if (moins == true)
            {
                a *= -1;
                c *= -1;
            }
            return (a * vecteur.X + b * vecteur.Y + c);
        }

        public static int pedroite(double dr)
        {
            double dc = 40 * 10;

            return (int)Math.Abs(dr / dc);
        }

        public static Coordonées coor(Vector2 coosouris)//reçoit les coordonnées de la souris sous forme de vecteur
        {


            double j = fcdroite(coosouris, true);
            double i = fcdroite(coosouris, false);
            if (j <= 0 && i <= 0)
            {
                int machina = pedroite(i);
                int machinb = pedroite(j);
                return new Coordonées(machinb, machina);
            }

            else
            {
                return new Coordonées(-1, -1);
            }

        }

        public static gamestate attaque_menu(Personnage persocourant, Carte mapcourrante)
        {
            Vector2 position;
            MouseState MState = Mouse.GetState();
            position = new Vector2(MState.X, MState.Y);
            mapcourrante.allume_zone(persocourant.range, persocourant.pos);
            double j = fcdroite(position, true);
            double i = fcdroite(position, false);
            if (j <= 0 && i <= 0 && MState.LeftButton == ButtonState.Pressed)
            {
                Coordonées c = coor(position);
                if (c != new Coordonées(-1, -1) && c.x < mapcourrante.longueur && c.y < mapcourrante.hauteur && mapcourrante.acces[c.x, c.y].lumière_case)
                {
                    persocourant.attaquer(mapcourrante.acces[c.x, c.y]);
                    if (mapcourrante.acces[c.x, c.y].est_occupée)
                        a_agi = true;
                    return gamestate.DEFAUT;
                }
                else return gamestate.ATTAQUE;
            }
            else return gamestate.ATTAQUE;
        }

        public static gamestate déplacement_menu(Personnage persocourant, Carte mapcourrante)
        {
            Vector2 position;
            MouseState MState = Mouse.GetState();
            position = new Vector2(MState.X, MState.Y);
            mapcourrante.allume_zone(persocourant.speed, persocourant.pos);
            double j = fcdroite(position, true);
            double i = fcdroite(position, false);
            if (j <= 0 && i <= 0 && MState.LeftButton == ButtonState.Pressed)
            {
                Coordonées c = coor(position);
                if (c.x < mapcourrante.longueur && c.y < mapcourrante.hauteur && mapcourrante.acces[c.x, c.y].lumière_case)
                {
                    mapcourrante.déplacement(persocourant.pos, new Coordonées(c.x, c.y));
                    déplacé = true;
                    return gamestate.DEFAUT;
                }
                else return gamestate.DEPLACEMENT;
            }
            else return gamestate.DEPLACEMENT;
        }

 
    }
}
